package com.ruoyi.project.domain.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.base.Field;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
@ApiModel("阶段字典配置表")
@TableName(value = "project_phase",autoResultMap = true)
public class ProjectPhase extends Field {

    private static final long serialVersionUID = 1L;
    /**
     * 阶段编码
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty("阶段编码")
    @TableId
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /** 关联的项目id */
    @Excel(name = "关联的项目id")
    private String projectNo;

    /** 关联的阶段 */
    @Excel(name = "关联的阶段")
    private String phaseId;


    /** 上一个环节的环节id */
    @Excel(name = "上一个环节的环节id")
    @TableField(exist = false)
    private String backId;


    /** 阶段开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "阶段开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 阶段结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "阶段结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;


    /** 阶段状态 0进行中 1已完成 */
    @Excel(name = "阶段状态 1进行中 2已完成")
    private String status;

    /** 阶段状态 0进行中 1已完成 */
    @Excel(name = "阶段状态 1进行中 2已完成")
    private String remark;

    /** 当前阶段名称 */
    @Excel(name = "当前阶段名称")
    private String phaseName;

    /** 操作人 */
    @Excel(name = "操作人")
    private String operator;

    //审核人  关联配置表  从配置表获取需要哪些岗位的人审核postId（审核的岗位）和审核类型needPerson 是否必须全部审核人同意
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Integer> audit;


}